home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Compendium Deluxe 2
/
LSD and 17bit Compendium Deluxe - Volume II.iso
/
a
/
prog
/
asmsrc
/
tango2.lha
/
SOURCES
/
TWAT,S
< prev
next >
Wrap
Text File
|
1988-07-19
|
17KB
|
942 lines
; ****************************************
; ** INTRO NUMBER 5 (C) 1990 CRYPTIC UK **
; ** CODED BY: TANGO **
; ** MUSIC BY: COUNT **
; ****************************************
opt c-
section blitter,code_c Chip Ram please !!
include df1:definitions Give me some hardware reggies
include df1:macros Give me some macros
;LOCAL CONSTANTS
icra equ $bfed01
;allocmem =-30-168
;freemem =-30-180
fontmemory =4000
MEMF_CHIP EQU 1<<1
MEMF_CLEAR EQU 1<<16
MEMORY EQU MEMF_CHIP+MEMF_CLEAR ;allocates chip ram and clears it
TAKEOVER:
LEA custom,a5
LEA GFXLIB(PC),a1 Point to 'graphics.library'
MOVEQ #0,D0 Doesn't matter which version
MOVE.L 4.w,a6 EXECBASE
jsr -132(a6) task switching off (forbid)
JSR -$228(a6) Openlibrary
MOVE.L D0,GFXBASE Store library address
jsr cyb_init
;Now put the graphic addresses in the CopperList
move.l screenx,d1 Bitplane memory address
move.w d1,bp1lo+2 for scroll 1.
swap d1
move.w d1,bp1hi+2
move.l screenx,d1 Bitplane memory address
ADD.L #10000,D1
move.w d1,bp3lo+2 for scroll 1.
swap d1
move.w d1,bp3hi+2
move.l screenx,d1 Bitplane memory address
ADD.L #10000*2,D1
move.w d1,bp5lo+2 for scroll 1.
swap d1
move.w d1,bp5hi+2
move.l screeny,d1 Bitplane memory address
move.w d1,abp1lo+2 for scroll 2.
swap d1
move.w d1,abp1hi+2
move.l screeny,d1 Bitplane memory address
ADD.L #10000,D1
move.w d1,abp3lo+2 for scroll 2.
swap d1
move.w d1,abp3hi+2
move.l screeny,d1 Bitplane memory address
ADD.L #10000*2,D1
move.w d1,abp5lo+2 for scroll 2.
swap d1
move.w d1,abp5hi+2
; ** SET UP EVEN BITPLANES 2,4,6 **
MOVE.L #PLAY2,D1
MOVE.W D1,BP2LO+2
SWAP D1
MOVE.W D1,BP2HI+2
MOVE.L #PLAY2,D1
ADD.L #10240,D1
MOVE.W D1,BP4LO+2
SWAP D1
MOVE.W D1,BP4HI+2
MOVE.L #PLAY2,D1
ADD.L #10240*2,D1
MOVE.W D1,BP6LO+2
SWAP D1
MOVE.W D1,BP6HI+2
move.l GFXBASE,d0 Move gfxbase offset to d0
MOVE.L D0,A6
MOVE.W #$80,dmacon(a5) Turn off copper whilst changing it
MOVE.L $32(A6),WBCOPPER Store old (WBench) copper address
MOVE.L #OURCOPPER,$32(A6) Point to new copper list (our own)
MOVE.W #$8080,dmacon(a5) Re-enable copper
MOVE.W #$8010,intena(a5)
MOVE.L $6c,old Save work bench interrupt
MOVE.L #LEV3,$6c Point to were to set up interrupt
move.w intenar(a5),systemints
move.b #%01111111,icra Kill keyboard.
WAIT:
BTST #6,$BFE001 This waits for the left
BNE.S WAIT mouse button to be pressed
move.l 4.w,a6 EXECBASE
MOVE.L old,$6c Restore system interrupts
MOVE.L GFXBASE,A6
MOVE.W #$80,dmacon(a5) Disable DMA
MOVE.L WBCOPPER,$32(A6) Restore old copperlist
MOVE.W #$8080,dmacon(a5) Enable DMA
move.w systemints,d0 Systems interrupt
or.w #$c000,d0
move.w d0,intena(a5) Enable OS interrupts
move.b #%10011011,icra Enable keyboard
clr.w $dff0a8 Clear music
clr.w $dff0b8
clr.w $dff0c8
clr.w $dff0d8
move.w #$f,$dff096
rts
ERROR:
move.l 4.w,a6 Get EXECBASE
jsr -138(a6) Permit ( multi-tasking on )
moveq #0,d0 Clear d0
RTS Return to AmigaDOS
;This is the NEW level 3 interrupt
LEV3:
Save_all Save all registers to the stack
lea custom,a5
AND #$10,intreqr(a5) Check if interrupt is from Copper
BNE out
move.w #$8010,$9c Cause Copper interrupt
; ** Main Routines called every VBI **
bsr bounce2
bsr testscroll
; bsr bounce
; bsr testscroll2
jsr cyb_music
out:
Return_all
DC.W $4ef9 hex value for JMP instruction
old:
DC.L 0 will jump to normal interrupt
; ** THE SCROLL ROUTINE **
testscroll:
tst.l stopper
beq.s scroll
sub.l #1,stopper
rts
scroll:
cmp.l #30,val Blitshifted all <<<
blo.s coarse_scroll_it No then get doing it !!
bsr blit_char Blit letter to screen
clr.l val Reset index
coarse_scroll_it:
bsr coarse Scroll all line
rts
testscroll2:
tst.l stopper2 Test for pause.
beq.s scroll2
sub.l #1,stopper2
rts
scroll2:
cmp.l #30,val2 Blitshifted all <<<
blo.s coarse_scroll_it2 No then get doing it blitter man !!
bsr blit_char2 Blit letter to screen
clr.l val2 Reset index
coarse_scroll_it2:
bsr coarse2 Scroll all line
rts
; ** BLIT LETTER ON THE SCREEN **
blit_char
jsr text
lea custom,a5 Get custom chip address
move.l screenx,a0 The screen on which scrolly is.
move.l #font,a1 Put font in blitter source
add.l d1,a1
MOVE.L #2,D2
blit_test:
btst #14,$dff002 Blitter busy !!!
bne blit_test Lets wait till she finishes !
move.w #$ffff,bltafwm(a5) Mask
move.w #$ffff,bltalwm(a5) Mask
move.l a0,bltdpth(a5) Blitter dest D (BOTTOM OF SCREEN)
move.l a1,bltapth(a5) Blitter source A (SCROLLING FONT)
move.w #36,bltamod(a5) Modulo (20-1)*2
move.w #36,bltdmod(a5) Modulo (20-1)*2
move.w #$9f0,bltcon0(a5) Minterms D=A
clr.w bltcon1(a5) Set Ascending mode
move.w #32*64+2,bltsize(a5) Blit size (SIZE OF FONT)
ADD.L #10000,A0
ADD.L #40*200,A1
DBF D2,BLIT_TEST
rts Return
; ** BLITSHIFT THE ENTIRE SCROLL LINE **
;
; FUNCTION: TO BARREL SHIFT THE ENTIRE SCROLLING MESSAGE.
coarse:
lea custom,a5
move.l screenx,a0
move.l a0,a1
add.l #2,a1
move.l #2,d1
move #12,d2
incl #4,val
ror #4,d2 ; Set to correct bits (12-15)
or.w #$09f0,d2
blit_wait:
btst #14,$dff002
bne blit_wait
move.l #-1,bltafwm(a5)
move.l a1,bltapth(a5)
move.l a0,bltdpth(a5)
move.w #0,bltamod(a5)
move.w #0,bltdmod(a5)
move.w d2,bltcon0(a5)
move.w #32*64+20,bltsize(a5)
add.l #10000,a0
add.l #10000,a1
dbf d1,blit_wait
rts
; ** SCROLL NUMBER TWO **
;
; DOCUMENTED IN SCROLL NUMBER ONE.
blit_char2:
jsr text2
lea custom,a5
move.l screeny,a0
move.l #font,a1
add.l d2,a1
MOVE.L #2,D6
blit_test2:
btst #14,$dff002
bne blit_test2
move.w #$ffff,bltafwm(a5)
move.w #$ffff,bltalwm(a5)
move.l a0,bltdpth(a5)
move.l a1,bltapth(a5)
move.w #36,bltamod(a5)
move.w #36,bltdmod(a5)
move.w #$9f0,bltcon0(a5)
clr.w bltcon1(a5)
move.w #32*64+2,bltsize(a5)
ADD.L #10000,A0
ADD.L #40*200,A1
DBF D6,BLIT_TEST2
rts
coarse2:
lea custom,a5
move.l screeny,a0
move.l a0,a1
add.l #2,a1
move.l #2,d4
incl #4,val2
move #12,d7
ror #4,d7
or #%100111110000,d7
blit_wait2:
btst #14,$dff002
bne blit_wait2
move.l #-1,bltafwm(a5)
move.l a1,bltapth(a5)
move.l a0,bltdpth(a5)
move.w #0,bltamod(a5)
move.w #0,bltdmod(a5)
move.w d7,bltcon0(a5)
move.w #32*64+20,bltsize(a5)
add.l #10000,a0
add.l #10000,a1
dbf d4,blit_wait2
rts
; ** THIS CRAPPY CODE BOUNCES THE SCROLLY MESSAGE NUMBER TWO **
;
; ENTRYS : YCORD-HOW FAR UP AND DOWN SCREEN TO GO.
; : DELTAY-WAIT COMMAND IN COPPERLIST.
; FUNCTION: BOUNCE THE SCROLLY MESSAGE.
bounce:
cmp.l #66,ycord
beq.s up
add.l #1,ycord
sub.b #1,deltay
rts
up: cmp.l #66,ycordminus
beq.s rst_cord
add.l #1,ycordminus
add.b #1,deltay
rts
rst_cord:
clr.l ycord
clr.l ycordminus
rts
even
; ** THIS CRAPPY CODE BOUNCES SCROLLY MESSAGE NUMBER ONE (ONE AT THE TOP) **
;
; ENTRYS : YCORD2-HOW FAR UP AND DOWN SCREEN TO GO.
; : DELTAY2-WAIT COMMAND IN COPPERLIST.
; FUNCTION: BOUNCE THE SCROLLY MESSAGE.
bounce2:
cmp.l #66,ycord2
beq.s up2
add.l #1,ycord2
add.b #1,deltay2
rts
up2:cmp.l #66,ycordminus2
beq.s rst_cord2
add.l #1,ycordminus2
sub.b #1,deltay2
rts
rst_cord2:
clr.l ycord2
clr.l ycordminus2
rts
even
; ** CHARACTER DECODER ROUTINE **
; CHARACTER BASE ADDRESS RETURNED IN D2
; JUST ADD THIS TO YOUR FONT ADDREES.
text:
move.l acurent,a2
clr.l d1
move.b (a2)+,d1
move.b d1,letter
cmp.b #255,d1
beq.w rst_text
cmp.b #254,d1
beq stop
sub.l #32,d1
asl d1
asl d1
SUB.L #12,D1
move.l a2,acurent
; CMP.B #"4",letter
; BPL.s add_more
rts
add_more:
CMP.B #"H",letter
BPL.S add_more3
add.l #40*15,d1
rts
add_more3:
add.l #40*30,d1
rts
rst_text:
move.l #0,d1
move.l #message,d2
move.l d2,acurent
rts
stop:
move.l #0,d1
add.l #1,acurent
move.l #150,stopper
rts
; ** MESSAGE NUMBER ONE **
Acurent:
DC.L message
message:
DC.B "ABCDEFGHIJK"
DC.B 255
even
text2:
Clr.l d1
move.l acurent2,a2
move.b (A2),d1
cmp.b #254,d1
beq pause_scroll
Cmp.b #255,d1
bne over2
Move.l #Texter2,a2
MOVE.L #TEXTER2,ACURENT2 ; RESET TO BEGINING OF MESSAGE.
Move.b (a2),d1
Over2:
Add.l #1,Acurent2
; Lea Char,a1
Sub.l #32,d1
Add.l d1,d1
Move.w (a1,d1),d2 ; CHAR BASE ADDRESS IN D2.
rts
pause_scroll:
move.l #5136,d2
add.l #1,acurent2
move.l #150,stopper2
rts
; ** MESSAGE NUMBER TWO **
even
Acurent2
Dc.l Texter2
Texter2:
Dc.b "WOW !!! THIZ IS SCROLLER NUMBER 2 ",254," AND ITS COOOOOL... ",255
even
; **********************************************
; ** THE MUZAX PLAY ROUTINE FOR NOISE TRACKER **
; ******************************************
MUZAX:
jsr CYB_init
end: rts
CYB_init:lea CYB_data,a0
add.l #$03b8,a0
moveq #$7f,d0
moveq #0,d1
CYB_init1:
move.l d1,d2
subq.w #1,d0
CYB_init2:
move.b (a0)+,d1
cmp.b d2,d1
bgt.s CYB_init1
dbf d0,CYB_init2
addq.b #1,d2
CYB_init3:
lea CYB_data,a0
lea CYB_sample1(pc),a1
asl.l #8,d2
asl.l #2,d2
add.l #$438,d2
add.l a0,d2
moveq #$1e,d0
CYB_init4:
move.l d2,(a1)+
moveq #0,d1
move.w 42(a0),d1
asl.l #1,d1
add.l d1,d2
add.l #$1e,a0
dbf d0,CYB_init4
lea CYB_sample1(PC),a0
moveq #0,d0
CYB_clear:
move.l (a0,d0.w),a1
clr.l (a1)
addq.w #4,d0
cmp.w #$7c,d0
bne.s CYB_clear
clr.w $dff0a8
clr.w $dff0b8
clr.w $dff0c8
clr.w $dff0d8
clr.l CYB_partnrplay
clr.l CYB_partnote
clr.l CYB_partpoint
move.b CYB_data+$3b6,CYB_maxpart+1
rts
rts
CYB_music:
addq.w #1,CYB_counter
CYB_cool:cmp.w #6,CYB_counter
bne.s CYB_notsix
clr.w CYB_counter
bra CYB_rout2
CYB_notsix:
lea CYB_aud1temp(PC),a6
tst.b 3(a6)
beq.s CYB_arp1
lea $dff0a0,a5
bsr.s CYB_arprout
CYB_arp1:lea CYB_aud2temp(PC),a6
tst.b 3(a6)
beq.s CYB_arp2
lea $dff0b0,a5
bsr.s CYB_arprout
CYB_arp2:lea CYB_aud3temp(PC),a6
tst.b 3(a6)
beq.s CYB_arp3
lea $dff0c0,a5
bsr.s CYB_arprout
CYB_arp3:lea CYB_aud4temp(PC),a6
tst.b 3(a6)
beq.s CYB_arp4
lea $dff0d0,a5
bra.s CYB_arprout
CYB_arp4: rts
CYB_arprout:
move.b 2(a6),d0
and.b #$0f,d0
tst.b d0
beq CYB_arpegrt
cmp.b #$01,d0
beq.s CYB_portup
cmp.b #$02,d0
beq.s CYB_portdwn
cmp.b #$0a,d0
beq.s CYB_volslide
rts
CYB_portup:
moveq #0,d0
move.b 3(a6),d0
sub.w d0,22(a6)
cmp.w #$71,22(a6)
bpl.s CYB_ok1
move.w #$71,22(a6)
CYB_ok1: move.w 22(a6),6(a5)
rts
CYB_portdwn:
moveq #0,d0
move.b 3(a6),d0
add.w d0,22(a6)
cmp.w #$538,22(a6)
bmi.s CYB_ok2
move.w #$538,22(a6)
CYB_ok2: move.w 22(a6),6(a5)
rts
CYB_volslide:
moveq #0,d0
move.b 3(a6),d0
lsr.b #4,d0
tst.b d0
beq.s CYB_voldwn
add.w d0,18(a6)
cmp.w #64,18(a6)
bmi.s CYB_ok3
move.w #64,18(a6)
CYB_ok3: move.w 18(a6),8(a5)
rts
CYB_voldwn:
moveq #0,d0
move.b 3(a6),d0
and.b #$0f,d0
sub.w d0,18(a6)
bpl.s CYB_ok4
clr.w 18(a6)
CYB_ok4: move.w 18(a6),8(a5)
rts
CYB_arpegrt:
move.w CYB_counter(PC),d0
cmp.w #1,d0
beq.s CYB_loop2
cmp.w #2,d0
beq.s CYB_loop3
cmp.w #3,d0
beq.s CYB_loop4
cmp.w #4,d0
beq.s CYB_loop2
cmp.w #5,d0
beq.s CYB_loop3
rts
CYB_loop2:
moveq #0,d0
move.b 3(a6),d0
lsr.b #4,d0
bra.s CYB_cont
CYB_loop3:
moveq #$00,d0
move.b 3(a6),d0
and.b #$0f,d0
bra.s CYB_cont
CYB_loop4:
move.w 16(a6),d2
bra.s CYB_endpart
CYB_cont:
add.w d0,d0
moveq #0,d1
move.w 16(a6),d1
and.w #$fff,d1
lea CYB_arpeggio(PC),a0
CYB_loop5:
move.w (a0,d0),d2
cmp.w (a0),d1
beq.s CYB_endpart
addq.l #2,a0
bra.s CYB_loop5
CYB_endpart:
move.w d2,6(a5)
rts
CYB_rout2:
lea CYB_data,a0
move.l a0,a3
add.l #$0c,a3
move.l a0,a2
add.l #$3b8,a2
add.l #$43c,a0
move.l CYB_partnrplay(PC),d0
moveq #0,d1
move.b (a2,d0),d1
asl.l #8,d1
asl.l #2,d1
add.l CYB_partnote(PC),d1
move.l d1,CYB_partpoint
clr.w CYB_dmacon
lea $dff0a0,a5
lea CYB_aud1temp(PC),a6
bsr CYB_playit
lea $dff0b0,a5
lea CYB_aud2temp(PC),a6
bsr CYB_playit
lea $dff0c0,a5
lea CYB_aud3temp(PC),a6
bsr CYB_playit
lea $dff0d0,a5
lea CYB_aud4temp(PC),a6
bsr CYB_playit
move.w #$01f4,d0
CYB_rls: dbf d0,CYB_rls
move.w #$8000,d0
or.w CYB_dmacon,d0
move.w d0,$dff096
lea CYB_aud4temp(PC),a6
cmp.w #1,14(a6)
bne.s CYB_voice3
move.l 10(a6),$dff0d0
move.w #1,$dff0d4
CYB_voice3:
lea CYB_aud3temp(PC),a6
cmp.w #1,14(a6)
bne.s CYB_voice2
move.w #1,$dff0c4
CYB_voice2:
lea CYB_aud2temp(PC),a6
cmp.w #1,14(a6)
bne.s CYB_voice1
move.l 10(a6),$dff0b0
move.w #1,$dff0b4
CYB_voice1:
lea CYB_aud1temp(PC),a6
cmp.w #1,14(a6)
bne.s CYB_voice0
move.l 10(a6),$dff0a0
move.w #1,$dff0a4
CYB_voice0:
move.l CYB_partnote(PC),d0
add.l #$10,d0
move.l d0,CYB_partnote
cmp.l #$400,d0
bne.s CYB_stop
CYB_higher:
clr.l CYB_partnote
addq.l #1,CYB_partnrplay
moveq #0,d0
move.w CYB_maxpart(PC),d0
move.l CYB_partnrplay(PC),d1
cmp.l d0,d1
bne.s CYB_stop
clr.l CYB_partnrplay
;st Pflag
CYB_stop:tst.w CYB_status
beq.s CYB_stop2
clr.w CYB_status
bra.s CYB_higher
CYB_stop2:
rts
CYB_playit:
move.l (a0,d1.l),(a6)
addq.l #4,d1
moveq #0,d2
move.b 2(a6),d2
and.b #$f0,d2
lsr.b #4,d2
move.b (a6),d0
and.b #$f0,d0
or.b d0,d2
tst.b d2
beq.s CYB_nosamplechange
moveq #0,d3
lea CYB_samples(PC),a1
move.l d2,d4
asl.l #2,d2
mulu #$1e,d4
move.l (a1,d2),4(a6)
move.w (a3,d4.l),8(a6)
move.w 2(a3,d4.l),18(a6)
move.w 4(a3,d4.l),d3
tst.w d3
beq.s CYB_displace
move.l 4(a6),d2
add.l d3,d2
move.l d2,4(a6)
move.l d2,10(a6)
move.w 6(a3,d4.l),8(a6)
move.w 6(a3,d4.l),14(a6)
move.w 18(a6),8(a5)
bra.s CYB_nosamplechange
CYB_displace:
move.l 4(a6),d2
add.l d3,d2
move.l d2,10(a6)
move.w 6(a3,d4.l),14(a6)
move.w 18(a6),8(a5)
CYB_nosamplechange:
move.w (a6),d0
and.w #$fff,d0
tst.w d0
beq.s CYB_retrout
move.w (a6),16(a6)
move.w 20(a6),$dff096
move.l 4(a6),(a5)
move.w 8(a6),4(a5)
move.w (a6),d0
and.w #$fff,d0
move.w d0,6(a5)
move.w 20(a6),d0
or.w d0,CYB_dmacon
CYB_retrout:
tst.w (a6)
beq.s CYB_nonewper
move.w (a6),22(a6)
CYB_nonewper:
move.b 2(a6),d0
and.b #$0f,d0
cmp.b #$0b,d0
beq.s CYB_posjmp
cmp.b #$0c,d0
beq.s CYB_setvol
cmp.b #$0d,d0
beq.s CYB_break
cmp.b #$0e,d0
beq.s CYB_setfil
cmp.b #$0f,d0
beq.s CYB_setspeed
rts
CYB_posjmp:
not.w CYB_status
moveq #0,d0
move.b 3(a6),d0
subq.b #1,d0
move.l d0,CYB_partnrplay
rts
CYB_setvol:
move.b 3(a6),8(a5)
rts
CYB_break:
not.w CYB_status
rts
CYB_setfil:
moveq #0,d0
move.b 3(a6),d0
and.b #1,d0
rol.b #1,d0
and.b #$fd,$bfe001
or.b d0,$bfe001
rts
CYB_setspeed:
move.b 3(a6),d0
and.b #$0f,d0
beq.s CYB_back
clr.w CYB_counter
move.b d0,CYB_cool+3
CYB_back: rts
CYB_aud1temp:
dcb.w 10,0
dc.w 1
dcb.w 2,0
CYB_aud2temp:
dcb.w 10,0
dc.w 2
dcb.w 2,0
CYB_aud3temp:
dcb.w 10,0
dc.w 4
dcb.w 2,0
CYB_aud4temp:
dcb.w 10,0
dc.w 8
dcb.w 2,0
CYB_partnote: dc.l 0
CYB_partnrplay: dc.l 0
CYB_counter: dc.w 0
CYB_partpoint: dc.l 0
CYB_samples: dc.l 0
CYB_sample1: dcb.l 31,0
CYB_maxpart: dc.w 0
CYB_dmacon: dc.w 0
CYB_status: dc.w 0
CYB_arpeggio:
dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
; ** THE COPPERLIST **
OURCOPPER:
dc.w $120,0
dc.w $122,0
dc.w bpl1mod,-2,bpl2mod,-2
dc.w diwstrt,$2c81+16,diwstop,$2cc1-16
dc.w bplcon0,$6600,bplcon1,$0000
dc.w ddfstrt,$30,ddfstop,$d0
dc.w color01,$000
dc.w color08,$000,color09,$f00,color10,$0f0,color11,$fff
dc.w color12,$eaf,color13,$145,color14,$a00,color15,$eee
bp2lo: dc.w bpl2ptl,$0000
bp2hi: dc.w bpl2pth,$0000
bp4lo: dc.w bpl4ptl,$0000
bp4hi: dc.w bpl4pth,$0000
bp6lo: dc.w bpl6ptl,$0000
bp6hi: dc.w bpl6pth,$0000
deltay2:wait $3909,$fffe
dc.w color01,$eee
bp1lo: dc.w bpl1ptl,$0000
bp1hi: dc.w bpl1pth,$0000
bp3lo: dc.w bpl3ptl,$0000
bp3hi: dc.w bpl3pth,$0000
bp5lo: dc.w bpl5ptl,$0000
bp5hi: dc.w bpl5pth,$0000
deltay: wait $da09,$fffe
abp1lo: dc.w bpl1ptl,$0000
abp1hi: dc.w bpl1pth,$0000
abp3lo: dc.w bpl3ptl,$0000
abp3hi: dc.w bpl3pth,$0000
abp5lo: dc.w bpl5ptl,$0000
abp5hi: dc.w bpl5pth,$0000
DC.W color01,$eee,color02,$dde
DC.W color03,$bbd
DC.W color04,$aac
DC.W color05,$88c
DC.W color06,$77b
DC.W color07,$65a
end_copper
;LOCAL CONSTANTS
WBCOPPER: DC.L 0
GFXLIB: DC.B "graphics.library",0
GFXBASE: DC.L 0
systemints: dc.l 0
scroll_offset: dc.l 0
screenx: dc.l picture
screeny: dc.l picture2
letter: dc.b 0
letter2: dc.b 0
val: dc.l 0
val2: dc.l 0
stopper: dc.l 0
stopper2: dc.l 0
speed: dc.w 12
ycord: dc.l 0
ycordminus: dc.l 0
ycord2: dc.l 0
ycordminus2:dc.l 0
;BINARY FILES TO BE INCLUDED
EVEN
FONTSPACE:
font:
incbin df0:METALCHARS
picture2
dcb.b 10000*3,0
picture:
dcb.b 10000*3,0
PLAY2:
INCBIN DF1:PIC.IFF
cyb_data:
incbin df1:mod.count